One common technique for reproducing grayscale images on a printer is dithering, a binarization process for generating binary image data indicating whether dots are on or off (whether to form or not form dots) from multi-level image data by comparing an input value (grayscale value expressed as one of 256 levels, for example) of each pixel included in multi-level input image data, and a threshold value set for each element of a dither matrix. Using this method, it is determined that a dot will be formed for a pixel when the input value of the pixel is at least as large as the corresponding threshold value in the dither matrix, and that a dot will not be formed when the input value of the pixel is less than the corresponding threshold value. By forming dots on recording paper based on this binary image data, a printer can print on recording paper an image having gradations expressed by the occurrence rate of dots.
However, dithering does not account for the magnitude of difference between input values of pixels and their corresponding threshold values. Therefore, this technique is problematic because the gradations of the image cannot be reproduced with accuracy.
A conventional image process using dithering will be described with referring to FIGS. 10(a) through 10(c). In an example of input image data shown in FIG. 10(a), input values become larger toward the top of the image and smaller toward the bottom. In other words, this input image data represents an input image that grows gradually lighter from top to bottom. When this input image data is binarized according to conventional dithering, the gradations of the input image are not always reproduced in the output image, as illustrated in FIG. 10(c). This problem can occur because binarizing input values according to conventional dithering will uniformly set dots to ON when input values are larger than the corresponding threshold values, regardless of whether the input values are much larger than the threshold values or only slightly larger than the threshold values, and will uniformly set dots to OFF when input values are smaller than the corresponding threshold values, regardless of whether the input values are slightly smaller than the threshold values or much smaller than the threshold values. In other words, this method ignores the magnitude of difference between the input values and their corresponding threshold values.
In addition to dithering, the error diffusion method has been used as a technique for binarizing input values of pixels in input image data. The error diffusion technique can reproduce more subtle levels of gradation than the dithering technique, because error diffusion distributes the differences between pixel input values and threshold values to peripheral pixels. However, the shortcoming of the error diffusion method is the large processing load required.